Skip to main content
Version: 1.0.0

第三部分:参数篇

5. pegasus 命令参数详解

本章节详细列出了 pegasus 命令行工具在各个核心阶段(导入、量化、推理、导出)所支持的参数。

5.1 模型导入 (Import)

目标:此为工具链的第一步,旨在将一个由主流框架(如 TensorFlow、ONNX、Caffe)训练生成的模型,解析并转换为 taNNTC 工具链专用的中间表示 (IR) 格式。

输入:原始模型文件(例如 .onnx.pb.tflite 文件)。

输出:一个 .json 文件(描述网络结构)和一个 .data 文件(存储网络权重)。这对文件是后续所有操作的基础。

参数含义类型 / 可选值默认值示例
--model待导入的源模型文件路径str--model yolo11s.onnx
--weights源模型权重文件(部分框架需要,如 Caffe/Darknet)str--weights model.caffemodel
--inputs模型输入节点名(空格分隔多个)str list框架可自动识别时可省略--inputs images
--input-size-list各输入张量形状,输入间用 # 分隔str自动推断(支持时)--input-size-list 1,3,640,640
--outputs模型输出节点名(空格分隔多个)str list自动识别(支持时)--outputs out0 out1 out2
--size-with-batchinput-size-list 是否含 batch 维True/False(可多输入用 # 对应)False--size-with-batch False
--input-dtype-list各输入数据类型float/int8/uint8/int16/…float--input-dtype-list float
--mean-values输入均值float[,float...]--mean-values 0.0,0.0,0.0
--std-values输入标准差float[,float...]--std-values 255.0,255.0,255.0
--predef-file预定义 .npz(占位符/阶段开关等)str--predef-file flags.npz
--subgraphs指定子图的输入/输出列表str--subgraphs in1#out1;in2#out2
--output-model转换后网络结构 .json 输出路径str同目录同名 .json--output-model y11.json
--output-data转换后权重 .data 输出路径str同目录同名 .data--output-data y11.data
--config导入配置文件(部分框架专用)json--config import_cfg.json

5.2 模型预处理配置文件生成 (Generate)

目标:此模块用于基于已导入的模型结构(.json 文件),自动生成预处理和后处理配置文件的模板(.yml 文件),简化配置过程。

输入.json 文件。

输出.yml 配置文件。

参数含义类型 / 可选值默认值示例
inputmeta子命令:指定生成输入端预处理文件pegasus generate inputmeta ...
postprocess-file子命令:指定生成输出端后处理文件pegasus generate postprocess-file ...
--model输入的 .json 模型结构文件路径str--model yolo11s.json
--input-meta-output指定输出的 inputmeta.yml 文件路径str--input-meta-output meta.yml
--postprocess-file-output指定输出的 postprocess_file.yml 文件路径str--postprocess-file-output post.yml

5.2.1 *_inputmeta.yml 前处理配置文件内容详解

此文件用于配置模型输入端的预处理。

  • 常见配置

    • meanscale:设置归一化的均值和缩放系数。
    • reverse_channel:BGR 与 RGB 通道反转开关。工具链将图片解码后按 RGB 顺序输入网络。如果目标网络默认的 channel 顺序是 BGR,则此处需要将此项设为 true。若不需要反转通道,则设为 false
  • 高级用法(指定输入格式):如果希望模型直接接收 RGB_PACKEDNV12 等特定硬件格式的数据,并让 NPU 执行预处理,需要修改:

    add_preproc_node: true
    preproc_type: IMAGE_NV12 # (或其他格式)

5.2.2 *_postprocess_file.yml 后处理配置文件内容详解

此文件用于配置模型输出端的后处理。

  • 常见用法(强制输出为 Float32):默认情况下,模型输出的数据类型与量化类型一致。如果希望无论量化类型是什么,最终输出都是 Float32,需要对每个输出层进行如下配置:

    postprocess:
    app_postprocs: # 该部分配置会影响最终导出的模型
    - lid: output_0 # 替换为您的输出层名称
    postproc_params:
    add_postproc_node: true
    force_float32: true # 强制输出为 float32
    # 如果有多个输出层,在此继续添加
    - lid: output_1
    postproc_params:
    # ...

5.3 模型量化 (Quantize)

目标:此为关键的优化步骤,旨在通过降低模型的数据精度(例如从 FP32 转换为 INT8),来减小模型体积、降低内存占用,并利用 NPU 的定点运算单元实现显著的推理加速。

输入:上一阶段生成的 .json.data 文件,以及一个用于校准的样本数据集。

输出:一个 .quantize 文件,其中包含了每一层的量化参数(如缩放因子、零点等)。

参数含义类型 / 可选值默认值示例
--model待量化的 .jsonstr--model y11.json
--model-data待量化的 .datastr--model-data y11.data
--dataset量化数据集列表文件(每行一张图片路径)str--dataset dataset.txt
--with-input-meta输入元数据 .yml(预处理/路径等)str--with-input-meta inputmeta.yml
--batch-size校准批大小int由输入元数据推断--batch-size 1
--iterations校准批次数int1--iterations 500
--device量化计算设备GPU/CPUGPU--device GPU
--quantizer量化方案(定点/通道/分组等)asymmetric_affine / perchannel_symmetric_affine / …asymmetric_affine--quantizer perchannel_symmetric_affine
--qtype目标精度类型uint8 / int8 / int16 / bfloat16 / float16 / …uint8--qtype uint8
--algorithm校准算法normal / kl_divergence / moving_average / autonormal--algorithm kl_divergence
--moving-average-weight滑动平均系数(选 moving_average 时有效)float0.01--moving-average-weight 0.01
--divergence-first-quantize-bitsKL 直方图桶指数 m(桶数=2^m)int11--divergence-first-quantize-bits 11
--compute-entropy计算各层量化熵以评估敏感度flag关闭--compute-entropy
--MLE最小化层误差优化(微调缩放)flag关闭--MLE
--group-size分组量化组大小(16 的倍数)int--group-size 32
--model-quantize.quantize 文件路径(重用/保存)str同名生成--model-quantize y11.quantize
--hybrid启用混合量化(自动/规则混合)flag关闭--hybrid
--rebuild重新量化(覆盖旧 .quantizeflag关闭--rebuild
--rebuild-all强制全层量化(实验)flag关闭--rebuild-all

5.4 模型推理 (Inference)

目标:此模块用于在 开发主机(PC/服务器) 上模拟模型的推理过程,主要用于功能验证和精度评估。您可以在部署到硬件之前,用它来快速验证原始浮点模型的正确性,或评估量化后模型的精度损失情况。

输入.json.data 文件,(若评估量化模型)还需 .quantize 文件。

输出:模型的推理结果,可用于与基准值 (Golden) 进行比对。

参数含义类型 / 可选值默认值示例
--model推理用 .jsonstr--model y11.json
--model-data推理用 .datastr--model-data y11.data
--model-quantize推理用 .quantize(选择量化推理时)str--model-quantize y11.quantize
--with-input-meta输入元数据 .ymlstr--with-input-meta inputmeta.yml
--dtype推理精度float32 / quantizedfloat32--dtype quantized
--batch-size推理批大小int由输入元数据推断--batch-size 1
--iterations推理批次数int1--iterations 100
--device推理计算设备GPU/CPUGPU--device GPU
--postprocess内置后处理任务print_topn / dump_result / classification_validate / detection_validate / …classification_classic--postprocess detection_validate
--postprocess-file自定义后处理 .ymlstr--postprocess-file post.yml
--output-dir推理结果输出目录str当前目录/控制台--output-dir outputs/

5.5 模型导出 (Export)

目标:此为工具链的最后一步,旨在将中间表示 (IR) 和量化结果,编译并打包成一个专为目标 NPU 硬件优化、可直接部署执行的最终产物。

输入.json.data 文件以及(若为量化模型).quantize 文件。

输出:一个或多个可直接在板端运行的文件,最核心的是统一的二进制图文件(例如 .nb)。

参数含义类型 / 可选值默认值示例
--model导出用 .json(含量化结构时可指向 *.quantize.jsonstr--model y11.json
--model-data导出用 .datastr--model-data y11.data
--model-quantize量化信息 .quantize(导出量化推理代码时)str--model-quantize y11.quantize
--with-input-meta输入元数据 .yml(可融合预处理节点)str--with-input-meta inputmeta.yml
--postprocess-file后处理配置 .yml(导出侧集成)str--postprocess-file post.yml
--output-path输出工程目录与前缀str当前目录--output-path ./export_yolo11s/y11
--optimize导出优化策略/目标硬件配置None / default / <hw_profile>default--optimize default
--dtype导出应用计算精度float32 / float16 / quantizedfloat16--dtype quantized
--save-fused-graph导出融合后模型 .json(调试)flag关闭--save-fused-graph
--pack-nbg-unify生成统一二进制图(.nb)应用flag关闭--pack-nbg-unify
--viv-sdkVIV SDK cmdtools 路径(配合打包二进制图)str--viv-sdk /opt/viv/cmdtools
--build-platform工程构建方式makemake--build-platform make
--target-ide-project目标平台linux64 / win32linux64--target-ide-project linux64
--batch-size导出支持的最大 batchint由输入元数据推断--batch-size 1
--force-remove-permute移除首尾 Permute(改变 IO 布局)flag关闭--force-remove-permute